<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script src="./js/jquery.js"></script>
    <script>
        //浅克隆：两个变量共用一个地址==?指向的是地址，而不是内容
        //深克隆：重新创建一个结构并且原样复制这样的行为叫做深克隆==》克隆的是内容，所以修改一个的时候另一个是会改变的
        //extend应用==》深克隆  extends的应用

        // var a = {
        //     obj: {
        //         arr: [1, 2, 3, 4, 6],
        //         key: "value",
        //         obj: {
        //             a: 10
        //         }
        //     }
        // }
        // var b = $.extend(true, {}, a)//这个布尔值有什么用的
        // console.log(a === b);
        //深克隆
        // var b = JSON.parse( JSON.stringify(a) );
        // console.log(b);
        // console.log(a == b , a.obj == b.obj )//不等，因为取到的是内容
        var target = {
            a: 10
        }
        // 合并的对象;
        var merge_obj1 = {
            b: 20
        }
        var merge_obj2 = {
            b: 30
        }
        var merge_obj3 = {
            c: 30
        }
        // 返回值是 : 目标对象;
        var res = $.extend(true,target, merge_obj1)
        console.log(target);
        console.log(res);
        console.log(res === target);
        //extend的作用==》合并默认参数  优化代码结构
        // 合并默认参数
         function cookie( options ){
                 // 在空对象里面可以设置默认参数;
                 options =  $.extend( {name : "" , value : ""} , options ) 
                 console.log(options)
            }

            cookie();// 没有传递参数 options为undefined;
            cookie({name : "hello"});
        //优化代码
        function Factory(){}
            // Factory.prototype.init = function(){}
            // Factory.prototype.bindEvent = function(){}
            // Factory.prototype.xxx = function(){}

            // 使用 $.extend 优化;
            $.extend( Factory.prototype , {
                  init : function(){
                        
                  },
                  bineEvent : function(){}
            })
            var fac = new Factory();
            console.log(fac);


    </script>
</body>

</html>